package com.example.demo.config;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2022-10-12
 * Time: 14:20
 */

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Spring拦截器的布置
 * 1.创建自定拦截器 实现 Spring 中 HandlerInterceptor接口 并重写perHandle方法
 * 2.重新创建类AppConfig 一定要是Configuration注解  然后实现WebMvcConfigurer接口
 *   并重写addInterceptors  在这个类的方法中添加拦截器（注入的方式） 并制定拦截规则
 * 3.登录拦截 异常处理 和统一数据格式之间的方法实现是有差别的
 */
@Component
//1.自定义拦截器
public class LoginIntercept implements HandlerInterceptor {
    /**
     * 返回 true 表示拦截判断通过，可以访问后面的接口，
     * 如果返回 false 表示拦截未通过，直接返回结果给前端
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                             Object handler) throws Exception {
        // 1.得到 HttpSession 对象
        HttpSession session = request.getSession(false);
        if (session != null && session.getAttribute("userinfo") != null) {
            // 表示已经登录
            return true;
        }
        // 执行到此行代码表示未登录，未登录就跳转到登录页面
        //response.sendRedirect("/login.html");
        return false;
    }
}

